﻿#ifndef __SUBWAY_H__
#define __SUBWAY_H__

#include <windows.h>
#include <iostream>
#include <locale.h>
#include <conio.h>  

class SubWay
{
	private:
		
		int x, y,x1,y1;
	public:
		SubWay();
		int SubWayMap[200][250];

		void ShowRailroad(int x, int y, char position);
		void ShowPlatform(int visota, int shirina, int x, int y);
		static void ShowTrain(int x, int y, int speed);


};

void Draw();
void Draw_Subway();

using namespace std;

// Хендл консоли
//extern HANDLE hStdOut;
	extern HANDLE hStdOut;
	//extern HANDLE h;


	const unsigned char LeftTop = 201;
	const unsigned char Horz = 0xCD;
	const unsigned char Vert = 0xBA;
	const unsigned char RightTop = 187;
	const unsigned char LeftBottom = 200;
	const unsigned char RightBottom = 188;
	const unsigned char LeftMiddle = 0xCC;
	const unsigned char RightMiddle = 0xB9;
	
	
	// Код клавиши Tab
    const int Tab = 9;
	//int key = 0;//переменная для считывания скан кодов клавиш
	

// Цвета
	#define WHITE_FONT	 15*16
	#define GRAY_FONT	 7*16
	#define PURPLE_FONT	 5*16
	#define RED_FONT	 12*16
	#define GREEN_FONT	 10*16
	#define BLUE_FONT	 9*16
	#define AZURE_FONT   3*16
	#define MUSTARD_FONT 6*16

#define DARK_BLUE	1
#define DARK_GREEN	2
#define AZURE		3
#define DARK_RED	4
#define PURPLE		5
#define	MUSTARD		6
#define GRAY		7
#define DARK_GRAY	8
#define	BLUE		9
#define GREEN		10
#define LIGHT_BLUE	11
#define RED			12
#define PINK		13
#define YELLOW		14
#define WHITE		15


enum ConsoleColor
{
	Black         = 0,
	Blue          = 1,
	Green         = 2,
	Cyan          = 3,
	Red           = 4,
	Magenta       = 5,
	Brown         = 6,
	LightGray     = 7,
	DarkGray      = 8,
	LightBlue     = 9,
	LightGreen    = 10,
	LightCyan     = 11,
	LightRed      = 12,
	LightMagenta  = 13,
	Yellow        = 14,
	White         = 15
};

// Показываем/прячем текстовый курсор
//void ShowCursor(bool visible);

// Устанавливает цвет символов и фона
void SetColor(ConsoleColor text, ConsoleColor background);

// Перемещает курсор в заданную позицию
void GotoXY(int X, int Y);

// Выводит заданную строку в заданную позицию
void WriteStr(int X, int Y, const char *Str);

// Выводит заданный символ начиная с заданной позиции
void WriteChar(int X, int Y, char Ch);

// Выводит указанное количество заданных символов начиная с заданной позиции
void WriteChars(int X, int Y, LPCWSTR Ch,WORD MyAttrib, int Len);

// Меняет текстовые аттрибуты, начиная с заданной позиции
void ChangeTextAttr(int X, int Y, ConsoleColor text, ConsoleColor background, unsigned len);


// Показываем/прячем текстовый курсор
/*void ShowCursor(bool visible)
{
	CONSOLE_CURSOR_INFO cci = { sizeof(cci), visible };
	SetConsoleCursorInfo(hStdOut, &cci);
}*/

// Устанавливает цвет символов и фона
void SetColor(ConsoleColor text, ConsoleColor background);

// Перемещает курсор в заданную позицию
void GotoXY(int X, int Y);

// Выводит указанное количество заданных символов начиная с заданной позиции
void WriteChars(int X, int Y, char Ch,WORD &MyAttrib, int Len);

void ShowChars();

void ClearScreen();

#endif //__SUBWAY_H__